package site.shihuan.helpdesk.im.dao;

import org.springframework.stereotype.Repository;
import site.shihuan.helpdesk.im.model.po.SvcRuContactPO;
import site.shihuan.helpdesk.im.model.vo.ClerkVO;
import site.shihuan.helpdesk.im.model.vo.VisitorVO;

import java.util.List;

/**
 * 运行时的客服对话(SvcRuContact)表数据库访问层
 *
 * @author 周世焕
 * @since 2021-03-03 16:25:19
 */
@Repository
public interface SvcRuContactDao {

    /**
     * 通过主键查询单条数据
     *
     * @param contactId
     * @return 影响行数
     */
    SvcRuContactPO selectByPrimaryKey(String contactId);

    /**
     * 新增数据
     *
     * @param svcRuContact 实例对象
     * @return 影响行数
     */
    int insert(SvcRuContactPO svcRuContact);

    /**
     * 新增数据（可选字段）
     *
     * @param svcRuContact 实例对象
     * @return 影响行数
     */
    int insertSelective(SvcRuContactPO svcRuContact);

    /**
     * 修改数据
     *
     * @param svcRuContact 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKey(SvcRuContactPO svcRuContact);

    /**
     * 修改数据(可选字段)
     *
     * @param svcRuContact 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(SvcRuContactPO svcRuContact);

    /**
     * 客服和访客的ID查询单条数据
     *
     * @param visitorId
     * @param clerkId
     * @return 影响行数
     */
    SvcRuContactPO selectByVisitorIdAndClerkId(String visitorId,String clerkId);

    /**
     * 通过主键删除数据
     *
     * @param contactId
     * @return 影响行数
     */
    int deleteByPrimaryKey(String contactId);

    /**
     * 查询与该客户正在对话的客服
     * @param visitorId
     * @param tenantId
     * @return
     */
    ClerkVO selectMyClerk(String visitorId, String tenantId);

    /**
     * 根据客服和访客的ID删除
     * @param visitorId
     * @param clerkId
     * @return
     */
    int deleteByVisitorIdAndClerkId(String visitorId,String clerkId);


}
